Multicast file viewing and editing

ABSTRACT

Various embodiments of a method, apparatus and computer readable storage medium are disclosed. An application displays a portion of a unit of information in a first window on a display, and another portion of the unit of information in a second window on the display. The first and second windows are concurrently displayed on the display. The application closes the second window on the display. The closing inserts an indicator representing the second window into the unit of information and removes the second window from the display. The unit of information does not comprise the indicator prior to closing. In response to an interaction involving the indicator, the application redisplays another portion of the unit of information in a third window on the display. The first window and the third window are concurrently displayed on the display. Prior to redisplaying, the indicator is displayed in the first window.

This application is a divisional of prior application Ser. No.10/817,681, filed Apr. 2, 2004. application Ser. No. 10/817,681 ishereby incorporated by reference in its entirety.

BACKGROUND OF THE INVENTION

1.0 Field of the Invention

This invention relates to viewing and editing information in windows,and more particularly, to viewing and editing information in multicastwindows.

2.0 Description of the Related Art

Large files in combination with a limited amount of display area ondisplay devices continue to present problems for a user of applicationsand tools encompassing those files. Although many enhancements have beenmade over the years, significant problems still remain.

One conventional method used to display the information in a large fileis to present the file in a scrollable area on the display, with varioususer controls, such as a scroll bar or search dialog box, and display aportion of the file containing the information or data (text and/orgraphic) of interest. When the user scrolls the file, the previouslydisplayed information may be entirely scrolled off the display screen.For example, a user may be preparing a document, such as a largeresearch paper. The user may need to scroll or refer back to varioussections of the document at different time to facilitate the task athand, for example, editing a desired section. It would be desirable forthe user to be able to retain the current document position on thedisplay while still being able to access reference information containedin other parts of the document. Ideally the user would like to viewselected sections of a file concurrently on the display, and not havethem scrolled out of view with each successive search or scrolloperation. In addition the user would like to edit different sections ofthe document as well, while all sections of interest are concurrentlydisplayed.

One application allows a user to split a window into two panes. Thedocument can be edited in one pane of the window, and the editingchanges may appear in the other pane of the window. However, the splitwindow does not provide independent minimize, maximize and close iconswhich allow each portion of the split window to be independentlyminimized, maximized and closed. Furthermore, the portions panels of thesplit window cannot be independently resized or overlapped.

In addition, that application allows a user to open new windows whichdisplay the same document as the original window. Depending on how thenew window was opened, editing changes made in one window are reflectedin all windows, or alternately, editing changes in one window do notappear in the other windows. However, the application does not provide amechanism to avoid updates in one window from appearing in the otherwindows and subsequently allow updates to re-appear in the otherwindows.

Therefore there is a need for an improved technique that allows a userto concurrently view and edit different sections of information in afile in different windows. The technique should also provide a mechanismto avoid updates in one window from appearing in the other windows, andsubsequently allow updates to reappear in the other windows.

SUMMARY OF THE INVENTION

To overcome the limitations in the prior art described above, and toovercome other limitations that will become apparent upon reading andunderstanding the present specification, various embodiments of amethod, apparatus and computer readable storage medium are disclosed.

In various embodiments, a computer-implemented method displays, by anapplication, a portion of a unit of information in a first window on adisplay, and another portion of the unit of information in a secondwindow on the display. The first window and the second window areconcurrently displayed on the display. The computer-implemented methodcloses, by the application, the second window on the display. Theclosing inserts an indicator representing the second window into theunit of information and removes the second window from the display. Theunit of information does not comprise the indicator prior to closing. Inresponse to an interaction involving the indicator, thecomputer-implemented method redisplays, by the application, anotherportion of the unit of information in a third window on the display. Thefirst window and the third window are concurrently displayed on thedisplay. Prior to redisplaying, the indicator is displayed in the firstwindow.

In other embodiments, a computer-readable storage medium has computerreadable program code embodied therewith. The computer-readable programcode is executable by a processor. The computer readable program code isexecutable by the processor to cause the processor to display, by anapplication, a portion of a unit of information in a first window on adisplay, and another portion of the unit of information in a secondwindow on the display. The first window and the second window areconcurrently displayed on the display. The computer-readable programcode is executable by the processor to cause the processor to close, bythe application, the second window on the display. The close inserts anindicator representing the second window into the unit of informationand removes the second window from the display. The unit of informationdoes not comprise the indicator prior to the close. Thecomputer-readable program code is executable by the processor to causethe processor to, in response to an interaction involving the indicator,redisplay, by the application, another portion of the unit ofinformation in a third window on the display. The first window and thethird window are concurrently displayed on the display. Prior to theredisplay, the indicator is displayed in the first window.

In yet other embodiments, an apparatus comprises a processor and amemory. The memory stores instructions that display, by an application,a portion of a unit of information in a first window on a display, andanother portion of the unit of information in a second window on thedisplay. The first window and the second window are concurrentlydisplayed on the display. The memory stores instructions that close, bythe application, the second window on the display. The close inserts anindicator representing the second window into the unit of informationand removes the second window from the display. The unit of informationdoes not comprise the indicator prior to the close. The memory storesinstructions that, in response to an interaction involving theindicator, redisplay, by the application, another portion of the unit ofinformation in a third window on the display. The first window and thethird window are concurrently displayed on the display. Prior to theredisplay, the indicator is displayed in the first window.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an illustrative computer system which uses variousembodiments of the present invention;

FIG. 2 depicts an embodiment of a multicast window set comprising aprimary multicast window and adjunct multicast windows of an applicationof FIG. 1;

FIG. 3 depicts a block diagram of an embodiment of a multicast datastructure of FIG. 1;

FIG. 4 depicts a flowchart of an embodiment of activating the multicastfunction to create an adjunct multicast window of FIG. 2;

FIG. 5 depicts a flowchart of an embodiment of creating a new adjunctmulticast window of FIG. 2;

FIG. 6 depicts a flowchart of scrolling the file displayed in amulticast window and invoking a scrollable area handler of FIG. 1;

FIG. 7 depicts a flowchart of an embodiment of the scrollable areahandler of FIG. 1;

FIG. 8 depicts a flowchart of editing the file displayed in a multicastwindow and invoking an editing handler of FIG. 1;

FIG. 9 depicts a flowchart of an embodiment of updating multicastwindows when one of the multicast windows is being edited;

FIG. 10 depicts a diagram of an embodiment of a multicast window set,illustrating various embodiments of menus comprising at least one of acreate multicast menu item, a freeze menu item and a thaw menu item;

FIG. 11 depicts a flowchart of an embodiment of freezing a multicastwindow;

FIGS. 12A and 12B collectively depict a flowchart of an embodiment ofupdating edited information in multicast windows when a multicast windowis frozen;

FIG. 13 depicts a flowchart of an embodiment of thawing a frozenmulticast window;

FIG. 14 depicts a diagram of an embodiment illustrating the editingoperation in a multicast window set having a frozen window;

FIG. 15 depicts a diagram of an embodiment of a multicast window setillustrating various embodiments of closing one or more multicastwindows;

FIG. 16 depicts a flowchart of an embodiment of closing an individualmulticast window;

FIG. 17 depicts a flowchart of an embodiment of closing the source file;

FIG. 18 depicts a flowchart of an embodiment of prompting the user witha dialog box when closing a source file;

FIG. 19 depicts a flowchart of an embodiment of closing a multicastwindow set using a close multicast function;

FIG. 20 depicts a flowchart of an embodiment of opening a source filethat has been closed using the close multicast function; and

FIG. 21 depicts an illustrative file comprising multicast windowindicator icons representing removed adjunct multicast windows.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tosome of the figures.

DESCRIPTION

After considering the following description, those skilled in the artwill clearly realize that the teachings of the various embodiments ofthe present invention can be utilized to view and/or edit multicastwindows. In various embodiments, edited data is contrasted withpre-edited data. A multicast window set comprising a first window and asecond window is created. The first window displays data from a unit ofinformation. The second window is frozen in response to a userinteraction with the multicast window set. At least a portion of thedisplayed data in the first window is edited thereby forming edited datafrom pre-edited data. The edited data in the first window isconcurrently displayed with at least a portion of the pre-edited data inthe second window.

In various embodiments, the multicast window set comprises a primarymulticast window and at least one adjunct multicast window. A unit ofinformation is typically a file.

In other embodiments, concurrent access to a plurality of subsets of aunit of information is provided. A first subset of the unit ofinformation is displayed in a first window. An adjunct multicast windowis activated in accordance with an icon associated with a removedmulticast window. The icon resides within the first window. A previouslydisplayed second portion of the unit of information is re-displayedwithin the adjunct multicast window.

In yet other embodiments, a multicast window set is generated. Amulticast close operation is performed. Subsequently an open operationis performed, wherein displayed portions of a unit of information at thetime of the multicast close operation are redisplayed in the multicastwindow set.

In various embodiments, information from the same file can be viewed ina plurality of multicast windows. Different multicast windows maydisplay different subsets of information of the file. The information inone multicast window may be scrolled without changing the othermulticast windows.

FIG. 1 depicts an illustrative computer system which uses variousembodiments of the present invention. The computer system 20 comprises aprocessor 22, display 24, input interfaces (I/F) 26, communicationsinterface 28, memory 30 and output interface(s) 32, all conventionallycoupled by one or more buses 34. The input interfaces 26 comprise akeyboard 36 and mouse 38. The output interface 32 comprises a printer40. The communications interface 28 is a network interface (NI) thatallows the computer 20 to communicate via a network, such as theInternet. The communications interface 28 may be coupled to atransmission medium 42 such as, a network transmission line, for exampletwisted pair, coaxial cable or fiber optic cable. In another exemplaryembodiment, the communications interface 28 provides a wirelessinterface, that is, the communications interface 28 uses a wirelesstransmission medium.

The memory 30 generally comprises different modalities, illustrativelysemiconductor memory, such as random access memory (RAM), and diskdrives. In some embodiments, the memory 30 stores an operating system48, an application 50 and at least one source file 52. The application50 typically displays the information in the file 52. In variousembodiments, the application 50 comprises at least one handler torespond to events associated with a graphical user interface. In someembodiments, the handlers comprise at least one or a combination of acreate multicast window handler 56, a scrollable area handler 58, anediting handler 60, a close adjunct handler 61, a close normal handler62, a close multicast handler 64, an open multicast handler 66, a freezehandler 68, a thaw handler 70 and an exit handler 71. In variousembodiments, the create multicast window handler creates an intermediatefile 72. In some embodiments, the intermediate file 72 is used toaccumulate editing changes. In various embodiments, the intermediatefile 72 comprises a multicast data structure 74 to store informationregarding the multicast windows. In other embodiments, an intermediatefile 72 is not used. In some embodiments, one or more frozen files 76are created when one or more multicast windows, respectively, arefrozen. In various embodiments, the intermediate file 72 and frozenfile(s) 76 are created or modified by the application 50.

The create multicast window handler 56 creates a new adjunct multicastwindow. The scrollable area handler 58 causes the information displayedin a scrollable area to change in response to a scrolling operation,and, in various embodiments, updates position information associatedwith the subset of the file displayed in a scrollable area in amulticast window. The editing handler 60 updates the multicast windowbeing edited in addition to the intermediate file and other multicastwindows that display the portion of the file being edited. The closeadjunct handler 61 closes a particular individual multicast window. Theclose normal handler 62 closes a multicast window set. The closemulticast handler 64 saves state information regarding the multicastwindows in the source file 52 such that the windows of the multicastwindow set can be restored, and closes all of the multicast windows inthe multicast window set. The open multicast handler 66 opens all themulticast windows of the multicast window set using the multicast datastructure 74 in the source file that was updated by the close multicasthandler 64. The freeze handler 68 freezes the information displayed in amulticast window to create a frozen multicast window, such that theinformation in the file associated with the frozen multicast window isnot changed by subsequent edits. The thaw handler 70 thaws a frozenmulticast window, and the thawed window will display the intermediatefile 72 which may have been edited. The exit handler 71 is invoked whenthe application is to be exited.

In other embodiments, the source file 52 may be remotely located fromthe application 50 on another computer system and be accessed via thenetwork. In some embodiments, the source file 52 also comprises amulticast data structure.

In various embodiments, the source file 52 comprises various types ofinformation, including, and not limited to, text strings and objects. Anobject typically comprises graphical information or data. In someembodiments, an object also comprises text strings, animated objects,icons, and other objects known to those of ordinary skill in the art.

In various embodiments, the specific software instructions, datastructures and data that implement various embodiments of the presentinventive technique are typically incorporated in the application 50.Generally, an embodiment of the present invention is tangibly embodiedin a computer-readable medium, for example, the memory 30 and iscomprised of instructions which, when executed by the processor 22,cause the computer system 20 to utilize the present invention. Thememory 30 may store the software instructions, data structures and datafor any of the operating system 48, application 50, source file 52,intermediate file 72 and one or more frozen files 76, in semiconductormemory, in disk memory, or a combination thereof.

The operating system 48 may be implemented by any conventional operatingsystem, such as z/OS® (Registered Trademark of International BusinessMachines Corporation), AIX® (Registered Trademark of InternationalBusiness Machines Corporation), UNIX® (UNIX is a registered trademark ofthe Open Group in the United States and other countries), WINDOWS®(Registered Trademark of Microsoft Corporation) and LINUX® (Registeredtrademark of Linus Torvalds).

In various embodiments, the present invention may be implemented as amethod, apparatus, or article of manufacture using standard programmingand/or engineering techniques to produce software, firmware, hardware,or any combination thereof. The term “article of manufacture” (oralternatively, “computer program product”) as used herein is intended toencompass a computer program accessible from any computer-readabledevice, carrier or media. In addition, the software in which variousembodiments are implemented may be accessible through the transmissionmedium, for example, from a server over the network. The article ofmanufacture in which the code is implemented also encompassestransmission media, such as the network transmission line and wirelesstransmission media. Thus the article of manufacture also comprises themedium in which the code is embedded. Those skilled in the art willrecognize that many modifications may be made to this configurationwithout departing from the scope of the present invention.

The exemplary computer system illustrated in FIG. 1 is not intended tolimit the present invention. Other alternative hardware environments maybe used without departing from the scope of the present invention.

FIG. 2 depicts an embodiment of a multicast window set 210 comprising aprimary multicast window 80 and first, second and third adjunctmulticast windows, 82, 84 and 86, respectively. Initially, a userinvokes the application 50 (FIG. 1) and displays the source file 52(FIG. 1) within a window 80, referred to as the primary multicastwindow, created by the application 50 (FIG. 1).

In various embodiments, the primary multicast window 80 for theapplication 50 comprises a title bar 87 with at least one of thewell-known minimize, maximize and close buttons, 88, 90 and 92,respectively. The minimize, maximize and close buttons, 88, 90 and 92,are used to reduce the size of the multicast window area, enlarge themulticast window area, and close or delete the application,respectively. Alternately, no minimize, no maximize and no close buttonsare used. A toolbar 94 comprises file, edit, create multicast,freeze/thaw and tools buttons, 96, 98, 100, 102 and 104, respectively.The primary multicast window 80 further comprises a scrollable area 106displaying at least a portion of a file, which may be the source file 52(FIG. 1), intermediate file 72 (FIG. 1) or one of the frozen files 76(FIG. 1), depending on the embodiment. Vertical and a horizontalscrollbars, 108 and 110, respectively, are associated with thescrollable area 106. The portion of the window that does not comprisethe scrollable area and scrollbars is referred to as a control area. Invarious embodiments, the control area comprises the title bar 87 andtoolbar 94.

In various embodiments, the application 50 (FIG. 1) is a word processingsystem or another application that involves viewing and/or editing ofscrollable files. In some embodiments, the multicast function isactivated by activating the create multicast button 100, a createmulticast menu item 214 or 215 (FIG. 10), or a create multicastkeystroke combination comprising one or more predetermined keystrokes(not shown), while viewing or editing a file within the application 50.Upon initially activating the multicast function in the primarymulticast window 80, a new multicast window 82, that is, a first adjunctmulticast window, is created. The first adjunct multicast window 82, atthe time of creation, displays information from the same file as theprimary multicast window 80. A multicast window other than the primarymulticast window is referred to as an adjunct multicast window. Invarious embodiments, the first adjunct multicast window 82, and in someembodiments all adjunct multicast windows, provides the samefunctionality as the primary multicast window 80. In yet otherembodiments, adjunct multicast windows 82, 84 and 86, do not provide allthe functionality of the primary multicast window. For example, in theseembodiments, the adjunct multicast windows, such as adjunct multicastwindow 86, do not have a create multicast button, wherein the userutilizes the create multicast button 100 within the primary multicastwindow to create an additional adjunct multicast window. In otherembodiments, the adjunct multicast windows 82, 84 and 86, do not allow auser to edit the displayed file. In yet another embodiment, activatingthe close icon 112 from an adjunct multicast window 82 closes only thatadjunct multicast window, while activating the close icon 92 from theprimary window 80 closes the entire multicast window set 210.

In various embodiments, when creating a new adjunct multicast window,the information displayed in the new adjunct multicast window ispositioned to the same starting location as the information from thefile displayed in the multicast window which activated the multicastfunction. For example, the subset of information from the file that isdisplayed in the first adjunct multicast window 82 is scrolled to thesame starting location as the subset of information of the file that isvisible within the primary multicast window 80. The first adjunctmulticast window 82, and more generally, any adjunct multicast window,following its creation, may be scrolled to any desired location withinthe file without affecting the display of any other primary or adjunctmulticast windows. The displayed file in the primary multicast window 80may also be scrolled without affecting the display of the adjunctmulticast window 82. In some alternate embodiments, when creating a newadjunct multicast window, the new adjunct multicast window displays theinformation at the start of the source file.

In various embodiments, the first adjunct multicast window 82 also has acreate multicast button 120. When the create multicast button 120 of thefirst adjunct multicast window 82 is activated, a second adjunctmulticast window 84 is created. Alternately, when the create multicastbutton 100 in the primary multicast window 80 is activated, the secondadjunct multicast window 84 is created. When creating the second adjunctmulticast window 84, the displayed file in the second adjunct multicastwindow 84 is scrolled to the same starting location of the file that isvisible within the multicast window from which the create multicastfunction was activated. The second adjunct multicast window 84,following its creation, may be scrolled to any desired location withinthe file without affecting the display of the primary multicast window80 or the first adjunct multicast window 82.

In some embodiments, the primary multicast window and the adjunctmulticast windows are visible on the display, although, at thepreference of the user, the windows of the multicast window set may beoverlapped in varying degrees in accordance with the desire of the userand the size of the computer display. For example, multicast window 84overlaps multicast window 86. Window operations are performed on awindow. A window operation comprises relocating, minimizing, maximizingand resizing a window. In various embodiments, the adjunct multicastwindows may be relocated, minimized, maximized and resized, in additionto providing the functionality of the application. In some embodiments,each multicast window may be relocated, minimized, maximized and resizedindependently of the other multicast windows, that is, the othermulticast windows are unchanged.

The multicast function may be invoked multiple times, facilitating thedeployment of a plurality of multicast windows. The number of multicastwindows may be limited by the physical constraints imposed by the sizeof the computer display, wherein at some point additional multicastwindows would not be practical due to excessive congestion within thedisplayable space.

In various embodiments, the application 50 may open multiple, differentsource files in the primary multicast window 80. Each source file openedwithin the application may be associated with its own multicast windowset. For simplicity, various embodiments of the present invention willbe described with respect to a single source file and a single multicastwindow set. In various embodiments, the intermediate file 72 (FIG. 1) isassociated with each multicast window 80, 82, 84 and 86, of themulticast window set 210. In some embodiments, each multicast window 80,82, 84 and 86, of the multicast window set 210 displays a subset of theinformation of the intermediate file 72 (FIG. 1).

In other embodiments, multiple intermediate files are associated withthe multicast windows of the multicast window set. In some embodiments,different multicast windows are associated with different intermediatefiles.

FIG. 3 depicts a block diagram of an embodiment of the multicast datastructure 74 of FIG. 1. Typically the multicast data structure 74 isstored as part of the intermediate file 72 (FIG. 1). In otherembodiments, the multicast data structure 74 is stored separate from theintermediate file 72 (FIG. 1). In some embodiments, the application 50is associated with multiple source files, and each source file isassociated with a multicast data structure 74. The multicast datastructure 74 is typically an array. In various embodiments, themulticast data structure 74 comprises, for each multicast window, awindow identifier (WID) field 130, a primary/adjunct indicator field(Primary/Adjunct) 132, a source file name field (Source File Name) 134,an intermediate file name field (Intermediate File Name) 136, anactive/inactive field (Active/Inactive) 138 and a position informationfield (Position Information) 140. In some embodiments, the multicastdata structure 74 further comprises a freeze attribute field (FreezeAttribute) 142 and a freeze file name field (Freeze File Name) 144.

In various embodiments, the position information 140 comprises astarting position associated with the first character or objectdisplayed in the scrollable area, referred to as a start-visibleposition. In other embodiments, the position information furthercomprises an ending position associated with the last character orobject displayed in the scrollable area, referred to as an end-visibleposition. In some embodiments, the start-visible and end-visibleposition information are relative byte offsets from the start of thefile. In other embodiments, the start-visible position is a relativebyte offset from the start of the file, and the end-visible positioninformation is a relative byte offset from the start-visible position.

Typically, the multicast data structure 74 does not exist until anadjunct multicast window is created. In an alternate embodiment, a rowin the multicast data structure 74 is provided for the primary multicastwindow when the source file 52 (FIG. 1) is opened. In the row, a windowidentifier associated with the primary multicast window is stored in thewindow identifier field 130, the primary/adjunct indicator field 132 isset to primary, the source file name field 132 stores the name of thesource file, or alternately, a handle thereto, the active/inactive field138 is set to active, position information is stored in the positioninformation field 140, the freeze attribute field 142 is set to a valuerepresenting a thaw state, and the remaining fields store NULLs. In someembodiments, if an intermediate file exists for the source file, thename of the intermediate file, or a handle thereto, is stored in theintermediate file name field 136.

FIG. 4 depicts a flowchart of an embodiment of activating a multicastwindow of FIG. 2. In various embodiments, when the create multicastfunction is activated, a new adjunct multicast window is created. In amulticast window, as described above, a currently visible section of adocument is associated with a start-visible position 145 (FIG. 2) and anend-visible position 146 (FIG. 2). The information between thestart-visible position 145 (FIG. 2) and end-visible position 146 (FIG.2) is the currently visible section. In various embodiments, informationfrom the source file is automatically displayed in the new adjunctmulticast window beginning with the information in the source file atthe start-visible position of the multicast window from which the createmulticast function was activated.

In step 148, the create multicast function, or multicast function, isactivated, by for example, activating the create multicast button 100 or120 of FIG. 2, from a menu item, or through one or more keyboardkeystrokes. In step 149, in response to activating the multicastfunction, in various embodiments, the create multicast window handler 56(FIG. 1) is invoked.

FIG. 5 depicts a flowchart of an embodiment creating an adjunctmulticast window. In various embodiments, the flowchart of FIG. 5 isimplemented in the create multicast window handler 56 of FIG. 1. In someembodiments, when the source file is opened in the application, theapplication creates a copy of the source file, referred to as anintermediate file that is displayed and is used to accumulate editingchanges. Alternately, the application does not create an intermediatefile and uses the source file directly.

Step 150 determines if this is the first invocation of the multicastwindow create function for the source file in the current applicationsession. In some embodiments, the create multicast window handlersearches for a multicast data structure 74 (FIG. 3), and when nomulticast data structure exists for the source file, this is the firstinvocation of the multicast window create function for the source filein the current application session. For example, the multicast datastructure 74 (FIG. 3) may be stored at a predetermined location in theintermediate file 72 (FIG. 1), such as at the beginning or end of theintermediate file. Alternately, the multicast data structure 74 (FIG. 1)is stored separately from the intermediate file 72 (FIG. 1). When themulticast data structure 74 (FIG. 3) exists, then the multicast createfunction was previously invoked for the source file. Alternately, themulticast data structure may be created when a source file is firstopened. In this embodiment, the multicast data structure 74 is examinedto determine if this is the first multicast create function for thissource file. In some embodiments, when the multicast data structurecomprises more than one row, the multicast create function waspreviously invoked for the source file. When the multicast datastructure comprises a single row, associated with the primary multicastwindow, the multicast create function was not previously invoked for thesource file.

When step 150 determines that this is the first invocation of themulticast window create function for the source file in the currentapplication session, no adjunct multicast windows are created ordisplayed. In some embodiments, in step 152, the source file 52 (FIG. 1)is copied to the intermediate file 72 (FIG. 1). The create multicastwindow handler 56 (FIG. 1) determines a name for the intermediate file72 (FIG. 1). For example, the intermediate file 72 (FIG. 1) may have thesame name as the primary file, but with a different extension.Alternately, a prefix may be added to the name of the source file toprovide the intermediate file name. In another alternate embodiment, thecreate multicast window handler creates a distinct name for theintermediate file 72 (FIG. 1).

In step 154, the intermediate file 72 (FIG. 1) is associated with thesource file, the primary multicast window, and the application. In someembodiments, when the intermediate file has been created prior toinvoking the create multicast function, steps 152 and 154 are omitted.In step 156, the multicast data structure 74 (FIG. 3) is updated. Eachmulticast window is associated with a row of the multicast datastructure 74 (FIG. 3). A window, or alternately, the instance of theapplication and source file associated with the window, is typicallyassociated with a window identifier. Each window is associated with adistinct window identifier. In some embodiments, the window identifiermay be a process identifier. A row is added to the multicast datastructure 74 (FIG. 3) for the primary multicast window. The windowidentifier of the primary multicast window is stored in the windowidentifier (WID) field 130 (FIG. 3) of the multicast data structure 74(FIG. 3). A primary/adjunct indicator field 132 (FIG. 3) in themulticast data structure 74 (FIG. 3) is set to primary. The name of thesource file, or alternately, a handle to the source file, is stored inthe source file name field 134 (FIG. 3). The name of the intermediatefile, or alternately, a handle to the intermediate file, is stored inthe intermediate file name field 136 (FIG. 3). The active/inactive field138 (FIG. 3) is set to active. The position information 140 (FIG. 3) isset to the start-visible position of the source file that was displayedin the primary multicast window. In other embodiments, the positioninformation 140 (FIG. 3) also comprises an end-visible position which isset to the end-visible position of the source file that was displayed inthe primary multicast window. In some embodiments, a freeze attributefield 142 (FIG. 3) is set to “thaw” and the freeze file name field 144(FIG. 3) is NULL. In other embodiments, the freeze attribute field 142(FIG. 3) and the freeze file name field 144 (FIG. 3) are omitted. In analternate embodiment, step 156 is omitted when the row of the multicastdata structure 74 (FIG. 3) associated with the primary multicast windowhas been created prior to invoking the create multicast window handler56 (FIG. 1). Step 156 proceeds to step 158. In an alternate embodiment,when the multicast data structure 74 (FIG. 3) contains the informationfor the primary multicast window prior to activating the createmulticast function, step 156 is omitted. In another alternateembodiment, when the intermediate file exists and the multicast datastructure contains the information for the primary multicast windowprior to activating the create multicast function, steps 150 to 156 areomitted.

When step 150 determines that this is not the first invocation of themulticast window create function for the source file in the currentapplication session, that is, the create multicast function waspreviously invoked for this source file in the current applicationsession, step 150 proceeds to step 158.

In step 158, a new adjunct multicast window is opened. In someembodiments, another instance of the application is opened in a newadjunct multicast window. In step 160, the intermediate file is openedwithin the new adjunct multicast window and displayed.

In step 162, the starting position of the intermediate file displayedwithin the scrollable area of the multicast window that activated thecreate multicast function is determined to provide an initiator startingposition. In some embodiments, the initiator starting position is thestart-visible position for that multicast window which is stored in themulticast data structure. Alternately, in step 162, the initiatorstarting position is set to the start of the intermediate file. In step164, the intermediate file is displayed in the scrollable area of thenew adjunct multicast window beginning at the initiator startingposition. In an alternate embodiment, step 162 is omitted, and step 164displays the intermediate file in the scrollable area of the new adjunctmulticast window beginning at the start of the intermediate file. Theamount of information displayed depends on the size of the new adjunctmulticast window. In some embodiments, the new adjunct multicast windowhas a predetermined size. In other embodiments, the position informationof the multicast data structure comprises an end-visible position. Invarious embodiments, the end-visible position is used to adjust the sizeof the new adjunct multicast window to display the information betweenthe start-visible position and the end-visible position.

In step 166, the multicast data structure 74 (FIG. 3) is updated for thenew adjunct multicast window. Another row is added to the multicast datastructure 74 (FIG. 3) with information for the new adjunct multicastwindow. The window identifier of the new adjunct multicast window isstored in the WID field 130 (FIG. 3) of the multicast data structure 74(FIG. 3). A primary/adjunct indicator field 132 (FIG. 3) in themulticast data structure 74 (FIG. 3) is set to adjunct. The name of thesource file, or alternately, a handle to the source file, is stored inthe source file name field 134 (FIG. 3). In some embodiments, foradjunct multicast windows, the source file name field 134 (FIG. 3) isset to NULL. The name of the intermediate file, or alternately, a handleto the intermediate file, is stored in the intermediate file name field136 (FIG. 3). The active/inactive field 138 (FIG. 3) is set to active.The position information 140 (FIG. 3) is set equal to the positioninformation associated with the multicast window from which the createmulticast function was invoked. In some embodiments, the freezeattribute field 142 (FIG. 3) is set to “thaw” and the freeze file name144 (FIG. 3) field is NULL to indicate that there is no frozen file forthe multicast window. Alternately, the freeze attribute field 142 (FIG.3) is set to “frozen,” the intermediate file is copied to provide afreeze file, and the name of the freeze file is stored in the freezefile name field 144 (FIG. 3). In step 168, the create multicast windowhandler 56 (FIG. 1) exits.

Any file displayed in any multicast window may be scrolled to anydesired location within the file without affecting the display of anyother multicast windows. In various embodiments, as a file displayed ina multicast window is scrolled, the position information associated withthat multicast window is stored in the multicast data structure 74 (FIG.3).

FIG. 6 depicts a flowchart of scrolling the file displayed in amulticast window and invoking a scrollable area handler 58 of FIG. 1. Instep 170, the file is scrolled by a user. The file may be scrolled usingany well-known technique. In some embodiments, a user positions theslider on a scroll bar to display desired information in the file. Thefile may also be scrolled by clicking on the scrollbar itself betweenthe slider and an opposing arrow, clicking on the opposing arrows, andusing a scrolling mouse. In various embodiments, the file isrepositioned or scrolled from a “goto” specified page number menuchoice. In another alternate embodiment, the file is repositioned orscrolled when a search or “find” is performed. In some embodiments, auser, via a mouse, grabs (right clicks) on a location in the scrollablearea and repositions the file using the mouse. In other embodiments, thefile may be repositioned using hyperlinks. In another embodiment, thefile in the scrollable area is scrolled by pressing a scroll “button” ona mouse. Alternately, a trackball may be used for scrolling. In yetother embodiments, the file in the scrollable area is scrolled using akey on a keyboard, for example, one of the up, down, left and rightarrow keys, or one of the page up or down keys. These and numerous othermethods of scrolling are familiar to those of ordinary skill in the art.In step 172, in response to the scrolling, the scrollable area handler58 (FIG. 1) is invoked.

FIG. 7 depicts a flowchart of an embodiment of the scrollable areahandler 58 of FIG. 1. In step 174, a subset of the file is displayed inthe scrollable area in accordance with the user scrolling to provide avisible subset of the file. In step 176, the window identifierassociated with the multicast window which is being scrolled isdetermined. In step 178, the position information associated with thevisible subset of the file is determined. In some embodiments, thestart-visible position is determined. In other embodiments, theend-visible position is also determined. In step 179, the positioninformation is stored in the multicast data structure 74 (FIG. 3) basedon the window identifier. In some embodiments, the start-visibleposition is stored in the position information 140 (FIG. 3) of themulticast data structure 74 (FIG. 3). In other embodiments, theend-visible position is also stored in the position information 140(FIG. 3) in the multicast data structure 74 (FIG. 3).

In various embodiments, any editing changes initiating from anymulticast window are available to any other multicast window within themulticast window set whenever the edited content is displayed orscrolled into the scrollable area of a multicast window. In theseembodiments, each window within the multicast window set may be scrolledand edited without disrupting the displayed information in the othermulticast windows in the multicast window set when the editing isperformed in a subset of the file that is not viewable in the othermulticast windows. However, a change made from one multicast window ispotentially viewable, and in some embodiments, is always viewable, inthe scrollable area of any other multicast window within the multicastset when the subset of the file containing the change is scrolled intothe scrollable area of the other multicast window. In some embodiments,the change seems to appear simultaneously in other multicast windowswhich have overlapping content, such that the changed text or object isdisplayed within those multicast windows. Otherwise, the changes appearwhen scrolled into the scrollable area in a multicast window.

In various embodiments, the multicast window set reflects the editingperformed by the user. In some embodiments, the intermediate file 72(FIG. 1) is created with the creation of the first adjunct multicastwindow (FIG. 5, step 152). In some embodiments, all editing changes areaccumulated within the intermediate file 72 (FIG. 1), and the datadisplayed on any window within the multicast window set reflects thedata residing within the intermediate file. Initially, the intermediatefile 72 (FIG. 1) is a mirror image of the source file 52 (FIG. 1)displayed within the primary multicast window. From that point forward,editing changes are accumulated within the intermediate file 72 (FIG.1). A subsequent “save” operation, performed either explicitly or aspart of a close operation, results in the intermediate file 72 (FIG. 1)being copied back to the original source file 52 (FIG. 1).

FIG. 8 depicts a flowchart of editing the intermediate file that isdisplayed in the multicast window and invoking the editing handler 60 ofFIG. 1. In step 180, the intermediate file 72 (FIG. 1) is edited in amulticast window. For example, a character may be inserted in the text,or text may be deleted. In step 182, in response to the editing, theediting handler 60 of FIG. 1 is invoked. In some embodiments, theediting handler 60 (FIG. 1) is invoked when a character added ordeleted. In other embodiments, the editing handler 60 (FIG. 1) isinvoked when a predetermined number of contiguous characters are addedor deleted.

FIG. 9 depicts a flowchart of an embodiment of updating other multicastwindows when another one of the multicast windows, referred to as theediting window, is being edited. In various embodiments, the flowchartof FIG. 9 is implemented in the editing handler 60 of FIG. 1. In otherembodiments, the flowchart of FIG. 9 can be implemented in an existinghandler of the application.

In step 188, the edits are accumulated in the intermediate file. In step189, the position information 140 (FIG. 3) in the multicast datastructure 74 (FIG. 3) for the editing window is updated. In someembodiments, the start-visible position for the editing window isdetermined and stored in the position information 140 (FIG. 3) of themulticast data structure 74 (FIG. 3) based on the window identifier 130(FIG. 3) of the editing multicast window. In other embodiments, theend-visible position for the editing window is also determined andstored in the position information 140 (FIG. 3) of the multicast datastructure 74 (FIG. 3) based on the window identifier 130 (FIG. 3) of theediting multicast window.

Step 190 determines whether any multicast windows are displayed inaddition to the editing window. In some embodiments, the multicast datastructure 74 (FIG. 3) is examined, to determine whether any othermulticast windows are displayed. When at least two rows, each associatedwith a multicast window, have the active/inactive field 138 (FIG. 3) setto active, at least one other multicast window is displayed. When onlyone row has the active/inactive field 138 (FIG. 3) set to active, noother multicast windows are displayed. When no other multicast windowsare displayed, in step 192, the editing handler exits.

When step 190 determines that at least one additional multicast windowis displayed, in step 194, the editing handler 60 (FIG. 1) selects amulticast window, other than the editing window, to provide a selectedmulticast window. In some embodiments, the editing handler 60 (FIG. 1)determines the window identifier 130 (FIG. 3) of the editing window toprovide an editing-window identifier, and, based on the multicast datastructure 74 (FIG. 3), selects a multicast window associated with awindow identifier that is different from the editing-window identifier.

Step 195 determines whether the selected multicast window is inactive.In various embodiments, the active/inactive field 138 (FIG. 3)associated with the window identifier for the selected multicast windowis examined. When the active/inactive field 138 (FIG. 3) is set toactive, the selected multicast window is active; otherwise, the selectedmulticast window is inactive.

When step 195 determines that the selected multicast window is notinactive, step 196 determines whether any of the data being edited is ina displayed portion of the intermediate file in the selected multicastwindow. When step 196 determines that no data being edited is in adisplayed portion of the intermediate file in the selected multicastwindow, in step 197, the position information in the multicast datastructure 74 (FIG. 3) is updated for the selected multicast window. Invarious embodiments, the number of bytes added or deleted in the editeddata is determined to provide an adjust value. When the edited data hasadded bytes, the adjust value is positive. When the edited data hasdeleted bytes, the adjust value is negative. For multicast windows whichare inactive or for which the edited data is not visible in the selectedmulticast window, the position information is adjusted when the editeddata is prior to the start-visible position. In some embodiments, whenthe edited data is prior to the start-visible position in the positioninformation 140 (FIG. 3) in the multicast data structure for theselected multicast window, the adjust value is added to thestart-visible position, and in some embodiments, the adjust value isadded to the end-visible position. In various embodiments, when theedited data is between the start-visible position and end-visibleposition of the position information 140 (FIG. 3) in the multicast datastructure 74 (FIG. 3) for the selected window, the adjust value is addedto the end-visible position. The start-visible position is stored in theposition information 140 (FIG. 3) of the multicast data structure 74(FIG. 3) based on the window identifier of the selected multicastwindow. In some embodiments, the end-visible position is also stored inthe position information 140 (FIG. 3) of the multicast data structure 74(FIG. 3) based on the window identifier of the selected multicastwindow.

Step 198 determines whether there are more multicast windows to process.In various embodiments, the editing handler 60 (FIG. 1) keeps tracks ofthe window identifiers of the multicast windows that have been checked,and if at least one window identifier associated with a multicast windowin the multicast data structure is different from those windowidentifiers that have been processed, then step 198 determines thatthere are more multicast windows to process.

When step 198 determines that there are more multicast windows toprocess, step 198 proceeds to step 194 to select another multicastwindow to process.

When step 196 determines that at least a portion of the edited data isin a displayed portion of the intermediate file in the selectedmulticast window, in step 202, at least a subset of the edited data isdisplayed in the selected multicast window. Step 202 proceeds to step197.

When step 195 determines that the selected multicast window is inactive,step 195 proceeds to step 197. When step 198, determines that there areno more multicast windows to process, in step 204, the editing handlerexits.

FIG. 10 depicts a diagram of an embodiment of a plurality of multicastwindows, that is, a multicast window set 210, illustrating variousembodiments of menus, 212 and 213, comprising at least one of a createmulticast menu item 214, 215, freeze menu items 216 and 220, and thawmenu item 218 and 222. In various embodiments, the multicast functionmay be implemented through a new toolbar button, or through a new menuitem 215 available from the file button 96 of the tool bar 94 or througha menu 212 displayed in response to a right mouse button click. In someembodiments, the new toolbar button is the create multicast button 100.In various embodiments, when a user performs a right mouse click in thescrollable area, the displayed menu 212 comprises the create multicastmenu item 214 which also implements the multicast function, and in someembodiments, when selected, invokes the create multicast window handler56 (FIG. 1).

In other various embodiments, freeze functionality is provided. In someembodiments, when the file button 96 in the toolbar 94 is activated,menu 212 is displayed which contains the freeze and thaw menu items, 216and 218, respectively. In other embodiments, when a tools button 104 inthe toolbar 94 is activated, menu 213 is displayed which contains thefreeze and thaw menu items, 220 and 222, respectively. By activating thefreeze/thaw button 102 or a freeze menu item, 216 or 220, editingchanges made in another multicast window are not viewable in the frozenwindow, thus facilitating the comparison of editing changes to thesource file. In other words, a frozen window is unchanged when othermulticast windows are edited. Deactivating the freeze/thaw button 102,or selecting a thaw menu item 218 or 222, reveals editing changes asthey are scrolled into view within the scrollable area of the thawedmulticast window. In yet another embodiment, separate freeze and thawbuttons are provided, rather than the freeze/thaw toggle button 102.

In some embodiments, the freeze/thaw button 102 acts as a toggle switchto freeze or thaw the contents of the file displayed in the multicastwindow. When activated in a freeze state, the freeze/thaw button isshaded 224 or changes color to distinguish it.

Alternately, the label of the freeze/thaw button is changed depending onwhether the multicast window is in a thawed or frozen state. When themulticast window is in the thaw state, the label of the freeze/thawbutton is “Freeze” 225. When the multicast window is in the frozenstate, the label of the freeze/thaw button is “Thaw” 226.

In various embodiments, an icon representing the state of the multicastwindow is displayed. When the state of the multicast window is thaw, athaw icon 227, for example, an image of rain drops, is displayed. Whenthe state of the multicast window is freeze, a freeze icon 228, forexample, an image of ice cubes, is displayed.

FIG. 11 depicts a flowchart of an embodiment of freezing a multicastwindow. In some embodiments, the flowchart of FIG. 11 is implemented inthe freeze handler 68 of FIG. 1. In various embodiments, the freezehandler 68 of FIG. 1 is invoked when the freeze/thaw button 102 (FIG.10) is activated or a freeze menu item 216 or 220 (FIG. 10) is selected.

In step 232, the intermediate file is copied to a freeze file. In step234, the freeze file is associated with the multicast window from whichthe freeze was activated. In step 236, a freeze attribute field 142(FIG. 3) associated with the frozen multicast window in the multicastdata structure 74 (FIG. 3) is set to frozen. In some embodiments, thename of the freeze file is stored in the freeze file name field 144 ofthe multicast data structure 74 (FIG. 3). In step 238, the freezehandler 68 (FIG. 1) exits.

FIGS. 12A and 12B collectively depict a flowchart of an embodiment ofupdating edited information in a multicast window set when a multicastwindow is frozen. In some embodiments, the flowchart of FIGS. 12A and12B is implemented in the editing handler 60 (FIG. 1). The flowchart ofFIGS. 12A and 12B is similar to the flowchart of FIG. 9; therefore thedifferences will be described. FIG. 12A comprises steps 188 to 194 ofFIG. 9; steps 188 to 194 are described above with reference to FIG. 9.Step 194 of FIG. 12A proceeds via continuator A to step 240 of FIG. 12B.In FIG. 12B, step 240 determines whether the freeze attribute 142 (FIG.3) associated with the selected multicast window is set to frozen. Whenthe freeze attribute 142 (FIG. 3) is set to frozen, step 240 proceeds tostep 198. When the freeze attribute 142 (FIG. 3) is not set to frozen,step 240 proceeds to step 195. FIG. 12B further comprises steps 195 to204 of FIG. 9; steps 195 to 204 are described above with reference toFIG. 9.

FIG. 13 depicts a flowchart of an embodiment of thawing a frozenmulticast window of FIG. 10. In various embodiments, the flowchart ofFIG. 13 is implemented in the thaw handler 70 of FIG. 1. In someembodiments, the thaw handler 70 (FIG. 1) is invoked when the thaw menuitem 218 or 222 (FIG. 10) is selected, or when the freeze/thaw button102 (FIG. 10) is toggled to thaw.

In step 241, the intermediate file is associated with the multicastwindow from which the thaw was activated, referred to as a thawedwindow. In some embodiments, the name or handle of the intermediate fileis retrieved from the row in multicast data structure 74 (FIG. 3) forthe thawed window. In step 242, the freeze attribute 142 (FIG. 3)associated with the frozen multicast window is set to thaw. In step 243,the intermediate file is displayed in the multicast window from whichthe thaw was activated, the thawed window. In step 244, the name of thefrozen file associated with the multicast window from which the thaw wasactivated is retrieved from the freeze file name field 144 (FIG. 3) ofthe multicast data structure 74 (FIG. 3). In step 245, the frozen fileis deleted using the retrieved name of the frozen file. In step 246, thethaw handler 70 (FIG. 1) exits.

FIG. 14 depicts a diagram of an embodiment illustrating the editingoperation in a multicast window set 210 having a frozen window 86. Theuser is editing adjunct multicast window 82 and has inserted text 247.Because adjunct multicast window 84 is in a thaw state, the same text248 appears in multicast window 84. Because multicast window 86 is in afrozen state, as indicated by icon 228, the text is not added to adjunctmulticast window 86 and adjunct multicast window 86 remains unchanged.Because the primary multicast window 80 is displaying a differentportion of the file, the new text 247 does not appear in the primarymulticast window 80, but is available if scrolled.

In various embodiments, one or more boundaries may be associated withthe freeze/thaw attribute such that one or more portions of a file maybe frozen or thawed. A portion of a file that is frozen is not modifiedwhen the corresponding portion of the file is edited in anothermulticast window. In some embodiments, when a portion of a displayedfile is frozen, a frozen file is created, and associated with the windowfrom which the freeze was activated. In various embodiments, the frozenportions of the frozen file are not contiguous. In some embodiments, auser may designate boundaries by specifying start and end points orhigh-lighting the portion of the file of interest. Alternately, theboundaries are designated by default to that portion of the file whichis visible in the scrollable area of a window. The user then activates afreeze, or alternately a thaw button, to set the desired attribute forthe portion of the file associated with the designated boundaries. Insome embodiments, tags are inserted at the start and end of the portionof the frozen file which is associated with the designated boundaries toindicate that the portion of the file between the tags has theattribute, either frozen or thawed, set. In other embodiments, boundaryinformation comprising the start and end of the boundary for theassociated freeze/thaw attribute is stored in the multicast datastructure. When all portions of the frozen file are thawed, themulticast window is associated with the intermediate file and the frozenfile is deleted.

FIG. 15 depicts a diagram of an embodiment of the multicast window set210 illustrating various embodiments of closing one or more multicastwindows. A multicast window remains on the display until either theapplication is closed or until the multicast window is closed. In someembodiments, the application is closed from the primary window 80 by,for example, clicking on the close icon 92 or selecting the “Exit” menuitem 252 from the file menu 254. The file menu 254 is displayed when auser clicks on the file button 96. In various embodiments, the close ofthe application results in the removal of the multicast window set 210,and any other windows associated with the application, from the display,and all open files associated with the application are closed.

In another embodiment, selecting “Close” 257 or 258 from the “file” menu254 or 255 in any multicast window 80 or 82, respectively, results inthe removal of the adjunct multicast windows from the display, andcloses the source file. In some embodiments, if the displayed file wasmodified, the user is additionally prompted, via a dialog box 262,during the close operation to indicate whether or not the changes madeduring the current session are to be retained or discarded by clickingon either a save button 264 or a discard button 266, respectively. Inresponse to the user clicking on the save button 264, the intermediatefile 72 (FIG. 1) is copied to the source file 52 (FIG. 1) and theintermediate file 72 (FIG. 1) is deleted. In response to the userclicking on the discard button 266, the intermediate file 72 (FIG. 1) isdeleted, and the source file is not modified.

In various embodiments, which will be described in further detail below,the file menu 254 comprises a close multicast menu selection item 268.In some embodiments, when the close icon 92 is clicked on in the primarymulticast window, the close-multicast dialog box 272 is displayed. Theclose-multicast dialog box comprises a close normal button 274 and aclose multicast button 276.

In some embodiments, a save menu item 277 may be selected from a filemenu 255 in any multicast window to store the intermediate file in thesource file.

In various embodiments, individual adjunct multicast windows of amulticast window set may also be closed, while leaving the applicationand remaining windows intact. In these embodiments, the operation toclose the adjunct window is invoked by clicking the window close icon278 of the adjunct multicast window 82. The adjunct multicast window isremoved from the display in a manner transparent to the application andthe remaining multicast windows are left intact. In various embodiments,an adjunct icon, 279-1 in the title bar or 279-2 in the tool bar, thatrepresents the removed multicast window, is displayed in the primarymulticast window 80.

FIG. 16 depicts a flowchart of an embodiment of closing an individualmulticast window. In some embodiments, the flowchart of FIG. 16 isimplemented in the close adjunct handler 61 of FIG. 1. In variousembodiments, the close adjunct handler 61 (FIG. 1) is invoked inresponse to clicking on the window close icon 278 of an adjunctmulticast window. In step 280, the active/inactive field 138 (FIG. 3) inthe multicast data structure 74 (FIG. 3) is set to inactive for themulticast window based on the window identifier for that multicastwindow. In step 282, the multicast window is removed from the display.In step 284, an icon representing the removed multicast window, theadjunct icon, 279-1 or 279-2 (FIG. 15), is added to the primarymulticast window in the title bar 87 (FIG. 15) or toolbar 94 (FIG. 15),respectively. In step 286, the close adjunct handler 61 (FIG. 1) exits.

In other embodiments, step 286 is omitted. Alternately, step 280 deletesthe information associated with the multicast window from the multicastdata structure 74 (FIG. 3).

In various embodiments, when a user clicks on the adjunct icon in theprimary multicast window, the associated adjunct multicast window isrestored and the active/inactive field in the multicast data structurefor that multicast window is set to active. The information in themulticast data structure 74 (FIG. 3) is used to restore the adjunctmulticast window.

In other embodiments, a user may close the source file. Selecting the“Close” menu item 257 or 258 (FIG. 15) from the “file” menu 254 or 255,(FIG. 15) in any multicast window 80 and 82 (FIG. 15), respectively,results in the removal of the multicast windows from the display, andcloses the source file.

FIG. 17 depicts a flowchart of an embodiment of closing the source file.In some embodiments, the flowchart of FIG. 17 is implemented in theclose normal handler 62 of FIG. 1. In various embodiments, the closenormal handler 62 (FIG. 1) is invoked in response to exiting theapplication or selecting the close menu item, 257 and 258 of FIG. 15.

In step 290, the intermediate file, without the multicast datastructure, is saved into the source file. In step 292, the freeze filesare deleted, if present. In step 294, all adjunct multicast windows areclosed, that is removed from the display. In various embodiments, themulticast windows are identified from the multicast data structure. Instep 296, the multicast data structure is deleted. In step 298, theintermediate file is deleted. In step 299, the source file is closed.The source file is no longer displayed in the primary multicast window.Step 300 determines whether at least one other source file is open. Whenat least one other source file is open, in step 302, the windowenvironment for the most recently processed other source file isreestablished. In step 304, the close normal handler 62 (FIG. 1) exits.When step 300 determines that no other source files are open, step 300proceeds to step 304 to exit.

FIG. 18 depicts a flowchart of an embodiment of prompting the user witha dialog box when closing a source file. The flowchart of FIG. 18 workswith the flowchart of FIG. 17. In various embodiments, the close normalhandler 62 implements the flowcharts of FIGS. 17 and 18. Step 310determines if the intermediate file has been modified since the lastsave operation. If not, step 312 proceeds to step 292 of FIG. 17. Whenthe intermediate file has been modified since the last save operation,in step 314, the dialog box 262 (FIG. 15) is displayed prompting theuser to save or discard the modifications by clicking on either a savebutton 264 (FIG. 15) or a discard button 266 (FIG. 15), respectively. Instep 316, when the user activates the save button 264 (FIG. 15), step316 proceeds to step 290 of FIG. 17; and when the user activates thediscard button 266 (FIG. 15), step 316 proceeds to step 292 of FIG. 17.

In some embodiments, there is another type of the close operationreferred to as “Close Multicast.” As shown in FIG. 15, in the primarymulticast window, the close multicast menu item 268 is displayed whenthe file button 96 is clicked on. In other embodiments, when the closeicon 92 is clicked on, the close-multicast dialog box 272 containing theclose normal button 274 and the close multicast button 276 is displayed.

In various embodiments, activating the close normal button 274 (FIG. 15)performs the close operation described above, and invokes the closenormal handler 62 (FIG. 1). The normal close operation does not retainany document positioning information for any of the multicast windowscomprising the multicast window set. The first subsequent “Open”operation following a “Close Normal” operation results in opening onlythe primary multicast window, with the document positioned to the startof the file in the scrollable area. In various embodiments, theflowcharts of FIGS. 17 and 18 perform the “Close Normal” operation.

In contrast, in various embodiments, the “Close Multicast” operationretains positioning information for each multicast window within themulticast window set. The “Close Multicast” operation provides forclosing the source file with the capability of opening the source fileat a later time with the source file being displayed just as it wasbefore the most recent close operation. In various embodiments, thefirst “Open” operation following a “Close Multicast” operation for asource file results in displaying the entire multicast window set witheach multicast window displaying the subsets of the source file thatwere displayed when the “Close Multicast” operation was invoked. In someembodiments, the freeze/thaw attribute and associated freeze file forany frozen windows are retained, and subsequently restored.

FIG. 19 depicts a flowchart of an embodiment of closing a multicastwindow set and saving state information about the multicast window setsuch that, when re-opened, the multicast window set can be restored. Insome embodiments, the flowchart of FIG. 19 is implemented in the closemulticast handler 64 of FIG. 1. In various embodiments, clicking on the“Close Multicast” button 276 (FIG. 15) or selecting the close multicastmenu item 268 (FIG. 15) invokes the close multicast handler 64 ofFIG. 1. In step 320, the intermediate file is copied into the sourcefile. In step 322, the intermediate file is deleted. In step 324, themulticast data structure is saved in the source file. In step 326, themulticast data structure is deleted. In step 328, all adjunct multicastwindows associated with the multicast window set are closed. In step329, the source file is closed, and is no longer displayed in theprimary multicast window. In step 330, the close multicast handlerexits. In various embodiments, any freeze files that were associatedwith the multicast window set are retained.

FIG. 20 depicts a flowchart of an embodiment of opening a source filethat has been closed using the close multicast function. In step 330,the source file is copied into an intermediate file. In step 332, theintermediate file is opened in the primary multicast window. In step334, the saved multicast data structure is retrieved. In step 336, themulticast window set is reestablished in accordance with the multicastdata structure. In step 338, the flowchart exits.

FIG. 21 depicts an illustrative file 340 comprising multicast windowindicator icons 342, 344 and 346, representing removed adjunct multicastwindows. In FIG. 21, the multicast window indicator icons, 342, 344 and346, are not scaled with respect to the size of the font; typically theheight of a multicast window indicator icon, 342, 344 and 346, is thesame as the font. In various embodiments, the multicast window indicatoricons, 342, 344 and 346, have a distinct indicator, for example, thelabel “MW.” In some embodiments, the multicast window indicator iconshave a distinct identifier representing the associated adjunct multicastwindow that was removed, for example, a number indicating the sequenceof removal of the adjunct multicast window.

In various alternate embodiments of the closing of the multicast windowset of FIG. 19, in step 324, one or more multicast window indicators andpositioning tags are stored within the source file 52 (FIG. 1), suchthat the multicast windows and position of the file displayed within ascrollable area of each of the multicast windows may later bereestablished. In some alternate embodiments, a multicast windowindicator icon, 342, 344 or 346 (FIG. 21), is generated based on themulticast window indicator and associated positioning tag, and themulticast window indicator icon, 342, 344 or 346 (FIG. 21), is insertedinto the source file at the starting position indicated by thepositioning indicator tag. Therefore, the source file may contain aplurality of multicast window indicator icons, 342, 344 or 346 (FIG.21). In some embodiments, multicast windows are individuallyreestablished as the user scrolls the source file in the multicastwindow by clicking on a multicast window indicator icon, 342, 344 or 346(FIG. 21). The multicast window indicator and positioning tag areinserted into the source file for each multicast window of the multicastwindow set to facilitate processing of a subsequent open operationwherein the previous multicast window set and corresponding positioningof the displayed information of the intermediate file is reestablished.In various embodiments, the multicast window indicator and positioningtag are implemented as hidden characters. In some embodiments, themulticast window indicator and positioning tag are implemented as XMLtags. In various embodiments, a multicast window indicator icon, 342,344 or 346 (FIG. 21), is generated and inserted into the source file foreach multicast window indicator. In some embodiments, the multicastwindow indicator icons, 342, 344 or 346 (FIG. 21), are positioned at thestarting location of the information that was displayed in a multicastwindow when the close multicast function was activated. In some of thesealternate embodiments, step 324, saving the multicast data structure, isomitted.

In an alternate embodiment of opening the multicast window set of theflowchart of FIG. 20, the multicast data structure is not used. In someembodiments, in step 334 of FIG. 20, the open multicast window handler68 (FIG. 1) reads the intermediate file and when a multicast positioningtag, or alternately, a multicast window indicator icon, 342, 344 or 346(FIG. 21), is encountered, opens a multicast window to display thesection of the file starting at the multicast positioning tag. Theintermediate file is displayed in the primary multicast window at thefirst multicast positioning tag encountered in the source file. When asubsequent multicast positioning tag, or alternately, a multicast windowindicator icon, 342, 344 or 346 (FIG. 21), is encountered, a newmulticast window is opened to display the information of theintermediate file at the subsequent multicast positioning tag. In thisalternate embodiment, step 336 of FIG. 20 is omitted.

In another alternate embodiment, when a multicast window indicator icon,342, 344 or 346, becomes visible in the scrollable area of the primarywindow, the associated multicast window is automatically displayed.

A user may close the application by clicking on the close icon 92 (FIG.15) or by selecting the exit menu item 252 (FIG. 15) of the primarymulticast window. In various embodiments, clicking on the close icon 92(FIG. 15) or selecting the exit menu item 252 (FIG. 15) invokes the exithandler 71 of FIG. 1. In some embodiments, the exit handler 71 (FIG. 1)invokes the close normal handler, closes any open source files, thencloses the application. In other embodiments, the exit handler displaysthe dialog box 272 (FIG. 15) to prompt the user to select a close normalor a close multicast operation, perform the selected close operation,closes any open source files, and closes the application.

In some embodiments, the multicast functionality described herein maytransparently span different applications deploying the multicasttechnology and operating upon a common supported file type. Typically,the multicast functionality of a multicast window set is associated witha single application. In other embodiments, the multicast functionalityof the multicast windows of the multicast window set may use at leasttwo different applications.

The foregoing description of the preferred embodiments of the inventionshas been presented for the purposes of illustration and description. Itis not intended to be exhaustive or to limit the invention to theprecise form disclosed. Many modifications and variations are possiblein light of the above teachings. It is intended that the scope of theinvention be limited not by this detailed description, but rather by theclaims appended thereto.

What is claimed is:
 1. A computer-implemented method, comprising:displaying, by an application, a portion of a unit of information in afirst window on a display, and another portion of said unit ofinformation in a second window on said display, wherein said firstwindow and said second window are concurrently displayed on saiddisplay; closing, by said application, said second window on saiddisplay, wherein said closing inserts an indicator representing saidsecond window into said unit of information and removes said secondwindow from said display, wherein said unit of information does notcomprise said indicator prior to said closing; and in response to aninteraction involving said indicator, redisplaying, by said application,said another portion of said unit of information in a third window onsaid display, wherein said first window and said third window areconcurrently displayed on said display, wherein, prior to saidredisplaying, said indicator is displayed in said first window.
 2. Themethod of claim 1, wherein said interaction involving said indicator isa user activation of said indicator.
 3. The method of claim 1, whereinsaid interaction involving said indicator is an interaction that causessaid indicator to be displayed in said first window.
 4. The method ofclaim 1, wherein said indicator is an icon.
 5. The method of claim 1,wherein said interaction involving said indicator is an activation ofsaid indicator.
 6. The method of claim 1, wherein said unit ofinformation is a file.
 7. The method of claim 1, wherein saidapplication is an editor.
 8. The method of claim 1, wherein said unit ofinformation has a start position tag at a starting location of saidanother portion in said unit of information, wherein said unit ofinformation includes said indicator at said starting location of saidanother portion in said unit of information.
 9. The method of claim 1,wherein said indicator is displayed in said first window at a start ofsaid another portion of said unit of information.
 10. Acomputer-readable storage medium having computer readable program codeembodied therewith, said computer-readable program code being executableby a processor, said computer readable program code comprising: computerreadable program code executable by said processor to cause saidprocessor to display, by an application, a portion of a unit ofinformation in a first window on a display, and another portion of saidunit of information in a second window on said display, wherein saidfirst window and said second window are concurrently displayed on saiddisplay; computer readable program code executable by said processor tocause said processor to close, by said application, said second windowon said display, wherein said close inserts an indicator representingsaid second window into said unit of information and removes said secondwindow from said display, wherein said unit of information does notcomprise said indicator prior to said close; and computer readableprogram code executable by said processor to cause said processor to, inresponse to an interaction involving said indicator, redisplay, by saidapplication, said another portion of said unit of information in a thirdwindow on said display, wherein said first window and said third windoware concurrently displayed on said display, wherein, prior to saidredisplay, said indicator is displayed in said first window.
 11. Thecomputer readable-storage medium of claim 10, wherein said interactioninvolving said indicator is a user activation of said indicator.
 12. Thecomputer readable-storage medium of claim 10, wherein said interactioninvolving said indicator is an interaction that causes said indicator tobe displayed in said first window.
 13. The computer-readable storagemedium of claim 10, wherein said indicator is displayed in said firstwindow at a start of said another portion of said unit of information.14. The computer-readable storage medium of claim 10, wherein saidinteraction involving said indicator is an activation of said indicator.15. The computer-readable storage medium of claim 10, wherein said unitof information has a start position tag at a starting location of saidanother portion in said unit of information, wherein said unit ofinformation includes said indicator at said starting location of saidanother portion in said unit of information.
 16. An apparatus,comprising: a processor; and a memory storing instructions that:display, by an application, a portion of a unit of information in afirst window on a display, and another portion of said unit ofinformation in a second window on said display, wherein said firstwindow and said second window are concurrently displayed on saiddisplay; close, by said application, said second window on said display,wherein said close inserts an indicator representing said second windowinto said unit of information and removes said second window from saiddisplay, wherein said unit of information does not comprise saidindicator prior to said close; and in response to an interactioninvolving said indicator, redisplay, by said application, said anotherportion of said unit of information in a third window on said display,wherein said first window and said third window are concurrentlydisplayed on said display, wherein, prior to said redisplay, saidindicator is displayed in said first window.
 17. The apparatus of claim16, wherein said interaction involving said indicator is a useractivation of said indicator.
 18. The apparatus of claim 16, whereinsaid interaction involving said indicator is an interaction that causessaid indicator to be displayed in said first window.
 19. The apparatusof claim 16, wherein said indicator is displayed in said first window ata start of said another portion of said unit of information.
 20. Theapparatus of claim 16, wherein said interaction involving said indicatoris an activation of said indicator.